package com.leigang.java.code.generics;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;

import java.util.*;

/**
 * @author leig-a
 * @version 1.0
 * @desc 泛型练习
 * @date 2022/5/25 9:29
 */
public class Demo1 {

    //public static int add(int a, int b) {
    //    System.out.println(a + "+" + b + "=" + (a + b));
    //    return a + b;
    //}
    //
    //public static float add(float a, float b) {
    //    System.out.println(a + "+" + b + "=" + (a + b));
    //    return a + b;
    //}
    //
    //public static double add(double a, double b) {
    //    System.out.println(a + "+" + b + "=" + (a + b));
    //    return a + b;
    //}


    public static <T extends Number> double add(T a, T b) {
        System.out.println(a + "+" + b + "=" + (a.doubleValue() + b.doubleValue()));
        return a.doubleValue() + b.doubleValue();
    }

//    public static void main(String[] args) {
//        add(1,2);
//        add(1f,2f);
//        add(1.0,2.0);
//
//
//        add(1,0);
//    }

    private static final List<String> servers = Arrays.asList("192.168.1.1", "192.168.1.2", "192.168.1.3", "192.168.1.4");

    public static String getServer(String key) {
        int hash = key.hashCode();
        int index =  hash%servers.size();
        return servers.get(index);
    }

    public static void main(String[] args) throws JsonProcessingException {

//        SortedMap sortedMap = new TreeMap();
//
//        sortedMap.put("a", "1");
//        sortedMap.put("c", "3");
//        sortedMap.put("e", "5");
//        sortedMap.put("d", "4");
//        sortedMap.put("b", "2");
//        sortedMap.put("ccc", "3");
//
//        System.out.println(sortedMap);
//
//        SortedMap subMap = sortedMap.subMap("b", "e");
//
//        System.out.println(subMap);

//        TestUser testUser1 = new TestUser();
//         testUser1.setName("tom");
//         testUser1.setPhone(123);
//
//         TestUser testUser2 = new TestUser();
//         testUser2.setName("tom");
//         testUser2.setPhone(123);
//
//         TestUser testUser3 = new TestUser();
//         testUser3.setName("tom");
//         testUser3.setPhone(123);
//
//         List<TestUser> list = new ArrayList<TestUser>();
//         list.add(testUser1);
//         list.add(testUser2);
//         list.add(testUser3);
//        System.out.println(list);
//
//         ObjectMapper mapper = new ObjectMapper();
//         String json = mapper.writeValueAsString(list);
//         System.out.println(json);

        for (int i = 0; i < 10; i++) {
            String server = getServer(String.valueOf(i));
            System.out.println("select server: "+server);
        }

    }

    @Data
    public static class TestUser{
        private String name;
        private Integer phone;
    }
}
